package com.jackiechan.hello.day01;

import java.util.Random;
import java.util.Scanner;

/**
 * 随机生成一个5位的英文字母验证码(大小写混搭)
 * 然后将该验证码输出给用户，然后要求用户输入该验证码，大小写不限制。
 * 然后判定用户输入的验证码是否有效(无论用户输入大小写，只要字母都正确即可)。
 * @author Xiloer
 *
 */
public class Test05 {
	public static void main(String[] args) {
//		display();
		verify();
	}

	private static void verify() {
		StringBuilder sb = create();
		System.out.print("请输入验证码：");
		String str = new Scanner(System.in).nextLine();
		if (sb.toString().toLowerCase().equals(str.toLowerCase())){
			System.out.println("验证通过");
		}else {
			System.out.println("请重新验证");
			verify();
		}
	}

	private static StringBuilder create() {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < 5; i++) {
			int flag = (int)(Math.random()*2);
			int ascii = new Random().nextInt(90-65)+65+(32*flag);
			sb.append((char)ascii);
		}
		System.out.println("验证码："+sb.toString());
		return sb;
	}


	private static void display() {
		// 97+122  65+90
		// 创建空的字符列表, 存储每个字符
		char[] verify = new char[5];
		for (int index = 0; index < verify.length; index++) {
			// offset 用于控制是否将大写字符转换为小写字符
			int offset = (int)(Math.random()*2)==0?0:32;
			// charint 为char的ASCII码
			int charint = new Random().nextInt(90-65)+65+offset;
			verify[index] = (char)charint;
		}
		String str = new String(verify);
		System.out.println("验证码:"+str);
		System.out.print("请输入验证码:");
		String input = new Scanner(System.in).nextLine();
		if ((str.toLowerCase()).equals(input.toLowerCase())){
			System.out.println("验证通过:");
		}else {
			System.out.println("验证未通过:");
			display();
		}
	}


}
